package cn.doitedu.day04.demo

import cn.doitedu.day01.utils.SparkUtil
import cn.doitedu.day03.beans.Student
import org.apache.spark.rdd.RDD

/**
 * @Date 22.4.1
 * @Created by HANGGE
 * @Description
 *             求成绩最好的两个人
 */
object Demo01_Glom {
  def main(args: Array[String]): Unit = {
    val sc = SparkUtil.getSc

    val rdd1 = sc.textFile("data/students.csv")
    // 1) 将每行数据切割
    val rdd2: RDD[Array[String]] = rdd1.map(line => line.split(","))


    // 2) 将每行数据切割 处理   封装在Student类中
    val res1: RDD[Student] = rdd1.map(line=>{
      val arr = line.split(",")
      //7,七娃,15,M,99,doit30
      Student(arr(0).toInt, arr(1), arr(2).toInt, arr(3), arr(4).toDouble, arr(5))
    })
    // 按照分数排序的数据   排序  全局排序
    val rdd3 = res1.sortBy(-_.score)
    // 获取前2个数据
    val students: Array[Student] = rdd3.take(2)
    println(students.toList)

    val rdd4 = res1.glom()
    val resx = rdd4.map(arr => {
      // 在分区内对分区中的数据进行排序   在不同的机器中执行
      arr.sortBy(-_.score).take(1).toList
    })
    resx.foreach(println)
  }


}
